package com.yc.thread;

public class Demo3 {

    int count = 0;

    // synchronized 同步锁   同步方法 =》 原子操作
    // 实例 synchronized 方法，锁定的是当前对象 =》 this
    synchronized void add1(){
        count++;  // 非原子操作
    }

    void add2(){
        synchronized (this){
            count++;
        }
    }

    public static void main(String[] args) throws InterruptedException {

        Demo3 demo3 = new Demo3();

        for (int j = 0; j < 5; j++) {
            Thread t1 = new Thread(()->{
                for (int i = 0; i < 10000; i++) {
                    demo3.add1();
                }
            });
            t1.start();
        }

        for (int j = 0; j < 5; j++) {
            Thread t1 = new Thread(()->{
                for (int i = 0; i < 10000; i++) {
                    demo3.add2();
                }
            });
            t1.start();
        }

        Thread.sleep(2000);

        System.out.println("demo3.count = " + demo3.count);

    }

}
